package com.example.demo.hotel.repository;

import com.example.demo.hotel.entity.Order;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import java.time.LocalDate;
import java.util.List;

public interface OrderRepository extends JpaRepository<Order, Long> {
    // 基本查询方法
    List<Order> findByRoomNumber(String roomNumber);
    List<Order> findByCheckInDateBetween(LocalDate startDate, LocalDate endDate);
    List<Order> findByStatus(String status);
    
    // 添加根据订单号查询
    Order findByOrderNo(String orderNo);
    
    // 添加根据客户姓名查询（支持分页）
    Page<Order> findByCustomerNameContaining(String customerName, Pageable pageable);
    
    // 添加根据房间类型查询
    List<Order> findByRoomType(String roomType);
    
    // 支持多条件查询（示例：根据状态和客户姓名）
    Page<Order> findByStatusAndCustomerNameContaining(String status, String customerName, Pageable pageable);
    
    // 支持模糊搜索（示例：根据订单号、客户姓名或房间号）
    Page<Order> findByOrderNoContainingOrCustomerNameContainingOrRoomNumberContaining(
        String orderNo, String customerName, String roomNumber, Pageable pageable);
}